package fi.helsinki.cs.ohtu10k.schedule;

import org.joda.time.DateTime;
import org.joda.time.Duration;

/**
 * Interface for classes representing event data.
 * @author Thomas Nyman
 *
 */
public interface ScheduleEvent extends Comparable<ScheduleEvent> {
	
	/**
	 * Returns start date of event.
	 * @return Start date of event as Date.object.
	 */
	public DateTime getStartDate();
	
	/**
	 * Returns duration of event.
	 * @return	Duration of event as Duration object.
	 */
	public Duration getDuration();
	
	/**
	 * Returns name of event.
	 * @return Name of event as String
	 */
	public String getName();
	
	/**
	 * Returns course event is assigned to.
	 * @return Course event is assigned to.
	 */
	public ScheduleCourse getCourse();
	
	/**
	 * Returns true if user should be notified of this event, otherwise false.
	 * @return True is user should be notified of this event, otherwise false.
	 */
	public boolean isNotifiable();
	
}
